/*
 * @(#)DictInfoDaoImpl.java 创建于 2013年3月21日 
 * 
 * Copyright (c) 2013-2014 by Drow.  
 *
 */
package com.hangxin.basic.dao.impl;

import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import com.hangxin.basic.dao.DictInfoDao;
import com.hangxin.basic.model.Dictinfo;
import com.hangxin.commons.dao.impl.BasicDaoImpl;
import com.hangxin.commons.util.PageModel;

/**
 * 
 * 类名称：DictInfoDaoImpl.java
 * <P/>
 * 类描述： 数据字典操作的DAO接口的实现类
 * <P/>
 * 创建时间：2013年3月21日
 * <P/>
 * 创建人： 李志远
 * <P/>
 * 联系方式： 1726021389@qq.com
 * <P/>
 * 修改人：无
 * <P/>
 * 修改时间：无
 * <P/>
 * 修改备注：无
 * <P/>
 * 版本：v1.0
 * 
 */
@Repository
public class DictInfoDaoImpl extends BasicDaoImpl implements DictInfoDao
{
	private static final Logger logger = LoggerFactory.getLogger(DictInfoDaoImpl.class);



	/**
	 * 
	 * 功能描述：分页查询
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @return
	 */
	@Override
	public PageModel<Map<String, Object>> pageForList(PageModel<Map<String, Object>> pageModel, Object[] paramscount)
	{
		String sqlcount = "";
		String sql ="";
		if(paramscount.length==1){
		   sqlcount = "select count(*) from Dictinfo where type like ? ";
		   sql = "SELECT * FROM Dictinfo where type like ?  ORDER BY ID DESC LIMIT ?,?";
		}else{
		   sqlcount = "select count(*) from Dictinfo where type like ? and dictname like ? ";
		   sql = "SELECT * FROM Dictinfo where type like ? and dictname like ?  ORDER BY ID DESC LIMIT ?,?";
		}
		
		Integer max = pageModel.getPageNo() * pageModel.getPageSize();// 最多数据条数
		Integer min = (pageModel.getPageNo() - 1) * pageModel.getPageSize();// 最少数据条数

		Integer flag = 0;
		if (paramscount != null)
		{
			flag = paramscount.length;
		}
		Object[] params = new Object[flag + 2];
		if (flag > 0)
		{
			System.arraycopy(paramscount, 0, params, 0, paramscount.length);
		}
		params[flag] = min;
		params[flag + 1] = max;
		return this.listByObject(sqlcount, sql, pageModel, paramscount, params);
	}



	/**
	 * 
	 * 功能描述：添加数据字典
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Integer dictIfExist(Dictinfo args0)
	{
		String sql = "select count(*) from dictinfo where type=? and dictname=?";
		Object[] params = new Object[] { args0.getType(), args0.getDictname() };
		return this.findByCount(sql, params);
	}



	/**
	 * 
	 * 功能描述：添加数据字典
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Integer insertDict(Dictinfo args0)
	{
		String sql = "insert into dictinfo(dictname,type,sortinfo,remark) values(?,?,?,?)";
		Object[] params = new Object[] { args0.getDictname(), args0.getType(),args0.getSortinfo(), args0.getRemark() };
		return this.save(sql, params);
	}



	/**
	 * 
	 * 功能描述：保存数据字典
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Integer saveDict(Dictinfo args0)
	{
		String sql = "update dictinfo t set dictname=?,type=?,sortinfo=?,remark=? where id=?";
		Object[] params = new Object[] { args0.getDictname(), args0.getType(),args0.getSortinfo(), args0.getRemark(), args0.getId() };
		return this.save(sql, params);
	}



	/**
	 * 
	 * 功能描述：删除数据字典
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Integer deleteDict(Long id)
	{
		String sql = "delete from dictinfo  where id=?";
		Object[] params = new Object[] { id };
		return this.delete(sql, params);
	}



	/**
	 * 
	 * 功能描述：根据id查询数据字典
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Map<String, Object> findMapByDectId(Dictinfo args0)
	{
		String sql = "select * from dictinfo where id=?";
		Object[] params = new Object[] { args0.getId() };
		return this.findByMap(sql, params);
	}



	/**
	 * 
	 * 功能描述：根据数字字典类型查询
	 * <P/>
	 * 创建时间：2014年4月8日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 * @return
	 */
	@Override
	public List<Map<String, Object>> findListByType(String args0)
	{
		String sql = "select * from dictinfo where TYPE=? order by id";
		Object[] params = new Object[] { args0 };
		return this.findMap(sql, params);
	}



	/**
	 * 
	 * 功能描述：根据数字字典类型和名称查询
	 * <P/>
	 * 创建时间：2014年4月8日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 * @return
	 */
	@Override
	public Map<String, Object> findListByTypeAndName(String args0, String args1)
	{
		String sql = "select * from dictinfo where TYPE=? and dictname=?";
		Object[] params = new Object[] { args0,args1 };
		return this.findByMap(sql, params);
	}



	/**
	 * 
	 * 功能描述：判断数据字典是否存在
	 * <P/>
	 * 创建时间：2013年3月21日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param args0
	 *            数据字典实体类
	 * @return
	 */
	@Override
	public Integer dictIfExistIdName(Dictinfo args0)
	{
		String sql = "select count(*) from dictinfo where type=? and dictname=? and id !=?";
		Object[] params = new Object[] { args0.getType(), args0.getDictname(),args0.getId() };
		return this.findByCount(sql, params);
	}



	/**
	 * 
	 * 功能描述：删除类型为岗位的字典
	 * <P/>
	 * 创建时间：2014年5月5日
	 * <P/>
	 * 创建人： 杨春豪
	 * <P/>
	 * 联系方式： 550813852@qq.com
	 * 
	 * @param args0
	 * @return
	 */


	@Override
	public Integer deleteDuty(Object[] params) {
       String sql = "delete from dictinfo where id=?and type=?";
		return this.save(sql, params);
	}



	

	/**
	 * 
	 * 功能描述：判断岗位是否已经关联人员
	 * <P/>
	 * 创建时间：2014年5月5日
	 * <P/>
	 * 创建人： 杨春豪
	 * <P/>
	 * 联系方式： 550813852@qq.com
	 * 
	 * @param args0
	 * @return
	 */
	@Override
	public Integer dutyToUserIfExist(Object[] params) {
    String sql = "select count(*) from personinfo where station = ?";
		return this.findByCount(sql, params);
	}

}
